# --------------------------------------------------- Tmux Config -----------------------------------------------------------

# --------------------------------------------------- prefix ----------------------------------------------------------------

# 修改指令前缀
#set -g prefix C-f #
#unbind C-f # C-b 即 Ctrl+b 键，unbind 意味着解除绑定
#bind C-f send-prefix # 绑定 Ctrl+f 为新的指令前缀

# 加载在配置文件指令为： r
bind r source-file ~/.tmux.conf \; display-message "Config reloaded.."

# --------------------------------------------------- 开启鼠标支持 ----------------------------------------------------------

# v2.1及以上的版本
set-option -g mouse on

# --------------------------------------------------- 窗口和窗格 ------------------------------------------------------------

# 这一部分是用来更方便切分pane的。prefix + v 代表竖着切，prefix + h 代表横着切。
#unbind '"'
bind h splitw -v -c '#{pane_current_path}' # 垂直方向新增面板，默认进入当前目录
#unbind %
bind v splitw -h -c '#{pane_current_path}' # 水平方向新增面板，默认进入当前目录

# 不用按prefix，直接用Alt+箭头在window之间switch。
bind -n M-Left previous-window
bind -n M-Right next-window

# --------------------------------------------------- vim 风格 -------------------------------------------------------------

# 绑定hjkl键为面板切换的上下左右键
bind -r k select-pane -U # 绑定k为↑
bind -r j select-pane -D # 绑定j为↓
bind -r h select-pane -L # 绑定h为←
bind -r l select-pane -R # 绑定l为→

# 绑定Ctrl+hjkl键为面板上下左右调整边缘大小的快捷指令
bind -r ^k resizep -U 10 # 绑定Ctrl+k为往↑调整面板边缘10个单元格
bind -r ^j resizep -D 10 # 绑定Ctrl+j为往↓调整面板边缘10个单元格
bind -r ^h resizep -L 10 # 绑定Ctrl+h为往←调整面板边缘10个单元格
bind -r ^l resizep -R 10 # 绑定Ctrl+l为往→调整面板边缘10个单元格

# 复制模式更改为 vi 风格
# 进入复制模式 快捷键：prefix + [
setw -g mode-keys vi # 开启vi风格后，支持vi的C-d、C-u、hjkl等快捷键

# 复制模式向 vi 靠拢
bind -T copy-mode-vi v send -X begin-selection # 开始复制
bind -T copy-mode-vi y send -X copy-selection # 复制剪切板

# 更新 DISPLAY 环境变量
bind u send-keys -R "export DISPLAY=$(tmux show-env | sed -n 's/^DISPLAY=//p')" enter

# --------------------------------------------------- 状态栏 --------------------------------------------------------------

# 设置窗口面板起始序号
set -g base-index 1 # 设置窗口的起始下标为1
set -g pane-base-index 1 # 设置面板的起始下标为1
set -s focus-events on
# tmux默认会自动重命名窗口，频繁的命令行操作，将频繁触发重命名，比较浪费CPU性能
set-window-option -g automatic-rename on
set-window-option -g allow-rename on
# 非当前窗口有内容更新时在状态栏通知
set-window-option -g monitor-activity off
set-window-option -g window-status-format '#[fg=yellow] #I:#W' # 状态栏窗口名称格式(#I：序号，#W：窗口名称)
set-window-option -g window-status-current-format '#[fg=colour226,bold] #I:#W' # 状态栏当前窗口名称格式
set -g status-right '#[fg=green,bold] %Y-%m-%d %H:%M:%S'
set -wg window-status-separator " ※" # 状态栏窗口名称之间的间隔
set -g message-style "bg=#202529, fg=#91A8BA" # 指定消息通知的前景、后景色

# 窗格活动和非活动状态下的颜色
#setw -g window-active-style 'bg=black'
#setw -g window-style 'bg=black'

# Status bar
set-option -g status on
set-option -g status-interval 1   # 状态栏刷新时间
set-option -g status-justify "left"   # 状态栏列表左对齐
set-option -g status-left-length 60
set-option -g status-right-length 90
set-option -g status-fg Magenta
set-option -g status-bg black

# Default terminal is 256 colors
set -g default-terminal "screen-256color"
# Add truecolor support
set -ga terminal-overrides ",xterm-256color:Tc"
# support alt key
set -g xterm-keys on
# 15分钟后自动执行屏保程序
set -g lock-after-time 900
#set -g lock-command cmatrix # 黑客帝国
set -g lock-command asciiquarium  # 海底世界

# --------------------------------------------------- plugin --------------------------------------------------------------

# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-yank'
set -g @plugin 'nhdaly/tmux-better-mouse-mode'
set -g @plugin 'NHDaly/tmux-scroll-copy-mode'
#set -g @plugin 'tomhey/tmux-remote-sessions'

# setting for tmux-resurrect 
set -g @resurrect-strategy-vim 'session'
set -g @resurrect-strategy-nvim 'session'
set -g @scroll-down-exit-copy-mode "on"
set -g @scroll-in-moused-over-pane "on"
set -g @scroll-without-changing-pane "on"
set -g @emulate-scroll-for-no-mouse-alternate-buffer "on"

run '~/.tmux/plugins/tpm/tpm'

# --------------------------------------------------- End -----------------------------------------------------------------
